In conventional distributed computing environments that include a service oriented architecture (SOA), messages are passed between and among clients and services. Such messages may be interpreted, and events may be initiated, according to a set of rules. Different rules may operate on messages to achieve different results. For example, when a service receives messages from a first client, it may apply rule A to perform a first action, and when the service receives messages from a second client, it may apply rule B to perform a second action.
Each service and client in a conventional SOA includes those rules that it needs to process messages. Without a necessary rule, a service may not be able to process a received message. Therefore, system administrators need to know in advance what rules will be necessary for each message that is likely to be exchanged in the SOA. These rules are generated and deployed before messages on which the rules will operate are sent. Such rules are statically deployed, meaning that the rules are placed on the clients and/or services until they are deleted or replaced, often by a system administrator.
Rules may need to be modified as new functionality is added, systems are upgraded, business models change, etc. Therefore, the rules at the services and clients periodically need to be replaced or updated. However, it is not always apparent that a rule needs to be updated or replaced. This fact is commonly discovered only once a customer complains about lost functionality.